Day 1 確立了專案目標後,今天要來聊聊專案會用到的各種技術框架與整體系統架構。
在工具的選擇上,考量到與目前工作技能的要求,希望藉由這個專案,加深對公司現有技術棧的理解與應用。
還沒厲害到能深入分析每個工具的優缺點,剛好利用這次機會多了解這些工具~
以下是本次專案預計採用的技術全家桶:
角色 | 技術選型 | 說明 |
---|---|---|
前端框架 | Angular | 採元件化的方式來建構功能豐富的單頁式應用(SPA) |
後端框架 | Spring Boot | 主流的 Java 框架,能快速搭建出穩定、高效能的微服務 |
資料庫 | PostgreSQL | 功能強大且穩定的開源關聯式資料庫 |
雲端平台 | Google Cloud Platform (GCP) | 三大雲端供應商之一,提供不同面層級(IaaS, PaaS, SaaS)服務。 |
選好蓋房子的工具,接著來看看設計圖。這是我目前規劃的理想系統架構:
從上面的架構圖可以看到整個服務的運作流程:
使用者的請求 (API Requests) 會先抵達 Google Cloud 的 外部 HTTP(S) 負載平衡器。整合 Cloud CDN 的功能,可以將靜態內容(如圖片、前端檔案)在全球的邊緣節點進行快取,提升讀取速度;動態的 API 請求則會被分發到後端的對應服務。
後端微服務架構,部署在 Cloud Run 上,並根據功能拆分為四個主要服務:
所有的後端服務都位於 VPC (虛擬私人網路) 內部,確保網路安全,並根據需求,與以下兩個核心服務溝通:
維運觀測性 (Observability) 與安全性 (Security) 相關服務:
自動化部署流程 (CI/CD):
俗話說的好
理想很豐滿,現實很骨感。
要在 30 天內完成後端開發、前端開發、容器化與上雲的設置,又要認真探究其中技術與背後原理,實在是太勉強了。這次專案的目標會更著重在「記錄學習過程」,寧可多花一點篇幅在介紹理論後才進行實作,確保自己學得扎實,也不會強制要求自己在 30 天內盡善盡美。
初步目標是先以完成基礎的後端服務為主,但希望在 30 天比賽結束之後,能陸續把文章補齊,將這個專案有始有終地完成。